package org.example.Java基础;

import java.util.ArrayList;

/**
 * 在Java中，参数传递只有按值传递，不论是基本类型还是引用类型。
 * ·基本数据类型(如int，char，boolean等)：传递的是值的副本，即基本类型的数值本身。因此，对方法参数的任何
 * 修改都不会影响原始变量。
 * ·引用数据类型（如对象引用）：传递的是引用的副本，即对象引用的内存地址。因此，方法内可以通过引用修改对象的
 * 属性，但不能改变引用本身，使其指向另一个对象。
 */
public class 值传递 {

    @Override
    public Object clone() throws CloneNotSupportedException {
        return super.clone();
    }

    private static void update(ArrayList<Integer> arrayList){
        arrayList = new ArrayList<>(); //

        arrayList.add(300);
//        arrayList.clear();
        System.out.println(arrayList); // [300]
    }

    public static void main(String[] args) {
        ArrayList<Integer> a = new ArrayList<>();

        a.add(100);
        a.add(200);

        System.out.println(a); // [100, 200]

        update(a);

        System.out.println(a); // [100, 200]
    }
}
